home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / mail / db.1.85.tar.gz / db.1.85.tar / db.1.85 / PORT / sunos.5.2 / include / compat.h < prev    next >
C/C++ Source or Header  |  1994-06-20  |  7KB  |  237 lines

  1. /*-
  2.  * Copyright (c) 1991, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)compat.h    8.13 (Berkeley) 2/21/94
  34.  */
  35.  
  36. #ifndef    _COMPAT_H_
  37. #define    _COMPAT_H_
  38.  
  39. #include <sys/types.h>
  40.  
  41. #define NO_ERRLIST
  42.  
  43. /*
  44.  * If your system doesn't typedef u_long, u_short, or u_char, change
  45.  * the 0 to a 1.
  46.  */
  47. #if 0
  48. typedef unsigned char    u_char;        /* 4.[34]BSD names. */
  49. typedef unsigned int    u_int;
  50. typedef unsigned long    u_long;
  51. typedef unsigned short    u_short;
  52. #endif
  53.  
  54. /* If your system doesn't typedef size_t, change the 0 to a 1. */
  55. #if 0
  56. typedef unsigned int    size_t;        /* POSIX, 4.[34]BSD names. */
  57. #endif
  58.  
  59. /* If your system doesn't typedef ssize_t, change the 0 to a 1. */
  60. #if 0
  61. typedef    int        ssize_t;    /* POSIX names. */
  62. #endif
  63.  
  64. /*
  65.  * If your system doesn't have the POSIX type for a signal mask,
  66.  * change the 0 to a 1.
  67.  */
  68. #if 0                    /* POSIX 1003.1 signal mask type. */
  69. typedef unsigned int    sigset_t;
  70. #endif
  71.  
  72.  
  73. #define write _write
  74.  
  75. /*
  76.  * If your system's vsprintf returns a char *, not an int,
  77.  * change the 0 to a 1.
  78.  */
  79. #if 0
  80. #define    VSPRINTF_CHARSTAR
  81. #endif
  82.  
  83. /*
  84.  * If you don't have POSIX 1003.1 signals, the signal code surrounding the 
  85.  * temporary file creation is intended to block all of the possible signals
  86.  * long enough to create the file and unlink it.  All of this stuff is
  87.  * intended to use old-style BSD calls to fake POSIX 1003.1 calls.
  88.  */
  89. #ifdef    NO_POSIX_SIGNALS
  90. #define    sigemptyset(set)    (*(set) = 0)
  91. #define    sigfillset(set)        (*(set) = ~(sigset_t)0, 0)
  92. #define    sigaddset(set,signo)    (*(set) |= sigmask(signo), 0)
  93. #define    sigdelset(set,signo)    (*(set) &= ~sigmask(signo), 0)
  94. #define    sigismember(set,signo)    ((*(set) & sigmask(signo)) != 0)
  95.  
  96. #define    SIG_BLOCK    1
  97. #define    SIG_UNBLOCK    2
  98. #define    SIG_SETMASK    3
  99.  
  100. static int __sigtemp;        /* For the use of sigprocmask */
  101.  
  102. /* Repeated test of oset != NULL is to avoid "*0". */
  103. #define    sigprocmask(how, set, oset)                    \
  104.     ((__sigtemp =                            \
  105.     (((how) == SIG_BLOCK) ?                        \
  106.         sigblock(0) | *(set) :                    \
  107.     (((how) == SIG_UNBLOCK) ?                    \
  108.         sigblock(0) & ~(*(set)) :                \
  109.     ((how) == SIG_SETMASK ?                        \
  110.         *(set) : sigblock(0))))),                \
  111.     ((oset) ? (*(oset ? oset : set) = sigsetmask(__sigtemp)) :    \
  112.         sigsetmask(__sigtemp)), 0)
  113. #endif
  114.  
  115. /*
  116.  * If your system doesn't have an include file with the appropriate
  117.  * byte order set, make sure you specify the correct one.
  118.  */
  119. #ifndef BYTE_ORDER
  120. #define    LITTLE_ENDIAN    1234        /* LSB first: i386, vax */
  121. #define    BIG_ENDIAN    4321        /* MSB first: 68000, ibm, net */
  122. #define    BYTE_ORDER    BIG_ENDIAN    /* Set for your system. */
  123. #endif
  124.  
  125. #if defined(SYSV) || defined(SYSTEM5)
  126. #define    index(a, b)        strchr(a, b)
  127. #define    rindex(a, b)        strrchr(a, b)
  128. #define    bzero(a, b)        memset(a, 0, b)
  129. #define    bcmp(a, b, n)        memcmp(a, b, n)
  130. #define    bcopy(a, b, n)        memmove(b, a, n)
  131. #endif
  132.  
  133. #if defined(BSD) || defined(BSD4_3)
  134. #define    strchr(a, b)        index(a, b)
  135. #define    strrchr(a, b)        rindex(a, b)
  136. #define    memcmp(a, b, n)        bcmp(a, b, n)
  137. #define    memmove(a, b, n)    bcopy(b, a, n)
  138. #endif
  139.  
  140. /*
  141.  * 32-bit machine.  The db routines are theoretically independent of
  142.  * the size of u_shorts and u_longs, but I don't know that anyone has
  143.  * ever actually tried it.  At a minimum, change the following #define's
  144.  * if you are trying to compile on a different type of system.
  145.  */
  146. #ifndef USHRT_MAX
  147. #define    USHRT_MAX        0xFFFF
  148. #define    ULONG_MAX        0xFFFFFFFF
  149. #endif
  150.  
  151. #ifndef O_ACCMODE            /* POSIX 1003.1 access mode mask. */
  152. #define    O_ACCMODE    (O_RDONLY|O_WRONLY|O_RDWR)
  153. #endif
  154.  
  155. #ifndef    _POSIX2_RE_DUP_MAX        /* POSIX 1003.2 RE limit. */
  156. #define    _POSIX2_RE_DUP_MAX    255
  157. #endif
  158.  
  159. /*
  160.  * If you can't provide lock values in the open(2) call.  Note, this
  161.  * allows races to happen.
  162.  */
  163. #ifndef O_EXLOCK            /* 4.4BSD extension. */
  164. #define    O_EXLOCK    0
  165. #endif
  166.  
  167. #ifndef O_SHLOCK            /* 4.4BSD extension. */
  168. #define    O_SHLOCK    0
  169. #endif
  170.  
  171. #ifndef EFTYPE
  172. #define    EFTYPE        EINVAL        /* POSIX 1003.1 format errno. */
  173. #endif
  174.  
  175. #ifndef    WCOREDUMP            /* 4.4BSD extension */
  176. #define    WCOREDUMP(a)    0
  177. #endif
  178.  
  179. #ifndef    STDERR_FILENO
  180. #define    STDIN_FILENO    0        /* ANSI C #defines */
  181. #define    STDOUT_FILENO    1
  182. #define    STDERR_FILENO    2
  183. #endif
  184.  
  185. #ifndef SEEK_END
  186. #define    SEEK_SET    0        /* POSIX 1003.1 seek values */
  187. #define    SEEK_CUR    1
  188. #define    SEEK_END    2
  189. #endif
  190.  
  191. #ifndef _POSIX_VDISABLE            /* POSIX 1003.1 disabling char. */
  192. #define    _POSIX_VDISABLE    0        /* Some systems used 0. */
  193. #endif
  194.  
  195. #ifndef    TCSASOFT            /* 4.4BSD extension. */
  196. #define    TCSASOFT    0
  197. #endif
  198.  
  199. #ifndef _POSIX2_RE_DUP_MAX        /* POSIX 1003.2 values. */
  200. #define    _POSIX2_RE_DUP_MAX    255
  201. #endif
  202.  
  203. #ifndef NULL                /* ANSI C #defines NULL everywhere. */
  204. #define    NULL        0
  205. #endif
  206.  
  207. #ifndef    MAX                /* Usually found in <sys/param.h>. */
  208. #define    MAX(_a,_b)    ((_a)<(_b)?(_b):(_a))
  209. #endif
  210. #ifndef    MIN                /* Usually found in <sys/param.h>. */
  211. #define    MIN(_a,_b)    ((_a)<(_b)?(_a):(_b))
  212. #endif
  213.  
  214. /* Default file permissions. */
  215. #ifndef DEFFILEMODE            /* 4.4BSD extension. */
  216. #define    DEFFILEMODE    (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
  217. #endif
  218.  
  219. #ifndef S_ISDIR                /* POSIX 1003.1 file type tests. */
  220. #define    S_ISDIR(m)    ((m & 0170000) == 0040000)    /* directory */
  221. #define    S_ISCHR(m)    ((m & 0170000) == 0020000)    /* char special */
  222. #define    S_ISBLK(m)    ((m & 0170000) == 0060000)    /* block special */
  223. #define    S_ISREG(m)    ((m & 0170000) == 0100000)    /* regular file */
  224. #define    S_ISFIFO(m)    ((m & 0170000) == 0010000)    /* fifo */
  225. #endif
  226. #ifndef S_ISLNK                /* BSD POSIX 1003.1 extensions */
  227. #define    S_ISLNK(m)    ((m & 0170000) == 0120000)    /* symbolic link */
  228. #define    S_ISSOCK(m)    ((m & 0170000) == 0140000)    /* socket */
  229. #endif
  230.  
  231. /* The type of a va_list. */
  232. #ifndef _BSD_VA_LIST_            /* 4.4BSD #define. */
  233. #define    _BSD_VA_LIST_    char *
  234. #endif
  235.  
  236. #endif /* !_COMPAT_H_ */
  237.